/**
 * ==================================
 * 
 * ES6类
 * 
 * ==================================
 */

/**
 * ==================================
 * 
 * 类
 * 
 * ==================================
 */
//class Person {
//	/**
//	 * 类的构造函数，实例化的时候执行
//	 */
//	constructor (name, age){
//		this._name = name;
//		this._age = age;
//	}
//	
//	getName (){
//		console.log(this._name);
//	}
//	setName (name){
//		this._name = name;
//	}
//}
//
//var p = new Person('张三', 20);
//p.setName('李四');
//p.getName();


/**
 * ==================================
 * 
 * 继承
 * 
 * ==================================
 */
//class Person {
//	
//	constructor (name, age) {
//		this.name = name;
//		this.age = age;
//	}
//	
//	getInfo(){
//		console.log(`姓名:${this.name} 年龄:${this.age}`);
//	}
//	
//	run () {
//		console.log('run');
//	}
//}
//
//class Web extends Person {
//	
//	constructor (name, age, sex){
//		super(name, age);  // 子类给父类传值
//		this.sex = sex;
//	}
//	
//	print(){
//		console.log(this.sex);
//	}
//}
//
//var w = new Web('张三', 30, '男');
//w.print();
//w.getInfo();
//w.run();



/**
 * ==================================
 * 
 * 静态方法
 * 
 * ==================================
 */
//class Person {
//	
//	constructor (name) {
//		this.name = name;  // 属性
//	}
//	
//	run () {  // 实例方法
//		
//		console.log(this.name);
//	}
//	
//	static work (){  // 静态方法
//		console.log('我是静态方法.');
//	}
//}
///**
// * or
// */
//Person.instance = '我是一个实例';
//
//var p = new Person('张三');
//p.run();
//Person.work();
//console.log(Person.instance);




/**
 * ==================================
 * 
 * 单例
 * 
 * 		多次实例化只执行一次构造函数
 * 
 * ==================================
 */
class DB {
	
	/**
	 * 利用静态方法实现单例
	 */
	static getInstance () {
		
		if(!DB.instance) {
			DB.instance = new DB();
		}
		return DB.instance;
	}
	
	constructor () { // 构造函数
		
		
		console.log('触发构造函数.');
		this.connect();
	}
	
	connect () {
		console.log('链接数据库.');
	}
	
	find () {
		console.log('查询数据库.');
	}
}

var myDb_1 = DB.getInstance();
var myDb_2 = DB.getInstance();
var myDb_3 = DB.getInstance();
var myDb_4 = DB.getInstance();
var myDb_5 = DB.getInstance();
var myDb_6 = DB.getInstance();
var myDb_7 = DB.getInstance();